Contention-based mechanisms are employed in protocols of a variety of different types of communication systems such as in local area networks (e.g., Ethernet system), wireless networks (e.g., IEEE 802.11 systems), home area network (HAN) systems, and Advanced Metering Infrastructure (AMI) networks, among others. In a contention-based system, there is a competition to access a scarce resource (e.g., a memory).
Such competition in a contention-based system typically occurs within a contention window. For example, in asynchronous systems, such as in non-beacon mode of IEEE 802.15.4 systems, the contention window is un-slotted and requests for access to the scarce resource may be sent at any given time such that the occurrence of incoming requests for access to the scarce resource is highly unpredictable.
In that case, when the scarce resource is a scarce execution resource such as a processor, a successful request may invoke the execution of at least one operation such as a task, a process, a job, a function or a method.
Furthermore, where the operations are based on a message-driven model, execution can be invoked for either a standalone operation or a sequence of operations wherein a sequence of operations comprises at least two standalone operations that are linked together such that the execution of the next operation is triggered upon reception of a given message.
Also, in such model, execution can be based on one request at a time. Therefore, during the execution of a sequence of operations, incoming requests for the execution of standalone operations are rejected and/or delayed for a certain time period.
Unfortunately, conventional scheduler such as those used in synchronous systems (e.g., TDMA-based systems) cannot be used to optimise the execution of both standalone operations and sequence of operations. In fact, in synchronous systems, the occurrence of incoming requests for access to the scarce resource is highly predictable since the contention window is slotted (i.e., divided in a number of slots) such that a specific request may only be sent during a predetermined slot.